const { JWT_SECRET } = require("../config/config.default");
const jwt = require("jsonwebtoken");
const { tokenExpiredError,invalidToken } = require("../constant/err.type");
const auth = async (ctx, next) => {
  const { authorization } = ctx.request.headers;
  // 获取token,将authorization变量中的'Bearer'替换为空字符串'',经过处理后token只包含实际JWT Token部分
  const token = authorization.replace("Bearer ", "");
  console.log(token);
  try {
    // user 中包含了payload的信息主要包含(id,user_name,is_admin)
    const user = jwt.verify(token,JWT_SECRET)
  } catch (err) {
    switch(err.name) {
        case 'TokenExpiredError':
            console.error('token已过期',err);
            return ctx.app.emit('error',tokenExpiredError,ctx)
        case 'JsonWebTokenError':
            console.error('无效的token',err);
            return ctx.app.emit('error',invalidToken,ctx)
    }
  }
  await next();
};
module.exports = {
    auth
};
